/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Repositories;

import Model.UsuarioModel;
import Util.Conexao;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Contagem
 */
public class UsuarioRepository {
    
    StringBuilder strSql;
    
    public UsuarioRepository()
    {
        
    }
    
    public boolean Salvar(UsuarioModel usuario)
    {
        try
        {
            strSql = new StringBuilder();
            
            Conexao.IniciarConexao();
            
            strSql.append("INSERT INTO usuario (USUARIO_NOME,USUARIO_LOGIN,USUARIO_SENHA) ");
            strSql.append("values ('"+usuario.getUSUARIO_NOME()+"','"+usuario.getUSUARIO_LOGIN()+"','"+usuario.getUSUARIO_SENHA()+"')");
            
            Conexao.stmt.executeUpdate(strSql.toString());
            
            return true;
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            return false;
        }
        finally
        {
            strSql = null;
            Conexao.FecharConexao();
        }
            
    }
    
    
    public boolean Alterar(UsuarioModel usuario)
    {
        try
        {
            strSql = new StringBuilder();
            
            Conexao.IniciarConexao();
            
            strSql.append("UPDATE usuario SET USUARIO_NOME = '"+usuario.getUSUARIO_NOME()+"',");
            strSql.append("USUARIO_LOGIN = '"+usuario.getUSUARIO_LOGIN()+"',USUARIO_SENHA = '"+usuario.getUSUARIO_SENHA()+"' ");
            strSql.append("WHERE USUARIO_ID = "+usuario.getUSUARIO_ID()+" ");
            
            Conexao.stmt.executeUpdate(strSql.toString());
            
            
            return true;
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            return false;
        }
        finally
        {
            strSql = null;
            Conexao.FecharConexao();
        }
    }
    
    
    
    public boolean Deletar(int IdUsuario)
    {
        try
        {
            strSql = new StringBuilder();
            
            Conexao.IniciarConexao();
            
            
            strSql.append("DELETE FROM usuario WHERE USUARIO_ID = "+IdUsuario+" ");
            
            Conexao.stmt.executeUpdate(strSql.toString());
            
            
            return true;
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            return false;
        }
        finally
        {
            strSql = null;
            Conexao.FecharConexao();
        }
    }
    
    
    public ArrayList<UsuarioModel> ListadeUsuarios() throws Exception
    {
        try
        {
            ArrayList<UsuarioModel> usuarios = new ArrayList<UsuarioModel>();
            
            Conexao.IniciarConexao();
            
            Conexao.rs = Conexao.stmt.executeQuery("select * from usuario");
            while(Conexao.rs.next())
            {
                UsuarioModel usuario = new UsuarioModel();
                usuario.setUSUARIO_ID(Integer.parseInt(Conexao.rs.getString("USUARIO_ID")));
                usuario.setUSUARIO_NOME(Conexao.rs.getString("USUARIO_NOME"));
                usuario.setUSUARIO_LOGIN(Conexao.rs.getString("USUARIO_LOGIN"));
                usuarios.add(usuario);
            }
            
            return usuarios;
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            throw ex;
        }
        
        
    }
    
    
    public ArrayList<UsuarioModel> BuscaUsuario(String nome) throws Exception
    {
        try
        {
            ArrayList<UsuarioModel> usuarios = new ArrayList<UsuarioModel>();
            
            Conexao.IniciarConexao();
            
            Conexao.rs = Conexao.stmt.executeQuery("select * from usuario WHERE USUARIO_NOME LIKE '"+nome+"%' ");
            while(Conexao.rs.next())
            {
                UsuarioModel usuario = new UsuarioModel();
                usuario.setUSUARIO_ID(Integer.parseInt(Conexao.rs.getString("USUARIO_ID")));
                usuario.setUSUARIO_NOME(Conexao.rs.getString("USUARIO_NOME"));
                usuario.setUSUARIO_LOGIN(Conexao.rs.getString("USUARIO_LOGIN"));
                usuarios.add(usuario);
            }
            
            return usuarios;
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            throw ex;
        }
        
        
    }
    
    public UsuarioModel getUsuario(int IdUsuario)
    {
        UsuarioModel usuario = null;
        try
        {
            strSql = new StringBuilder();
             
            Conexao.IniciarConexao();
            
            strSql.append("SELECT * FROM usuario WHERE USUARIO_ID = "+IdUsuario+" ");
            
            Conexao.rs = Conexao.stmt.executeQuery(strSql.toString());
            while(Conexao.rs.next())
            {
                usuario = new UsuarioModel();
                usuario.setUSUARIO_ID(Integer.parseInt(Conexao.rs.getString("USUARIO_ID")));
                usuario.setUSUARIO_NOME(Conexao.rs.getString("USUARIO_NOME"));
                usuario.setUSUARIO_LOGIN(Conexao.rs.getString("USUARIO_LOGIN"));
                usuario.setUSUARIO_SENHA(Conexao.rs.getString("USUARIO_SENHA"));
                break;
            }
            return usuario;
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            return usuario;
        }
    }
    
    
    public boolean Autenticas(String login,String senha)
    {
        int count = 0;
        try
        {
            
            strSql = new StringBuilder();
             
            Conexao.IniciarConexao();
            
            strSql.append("SELECT * FROM usuario WHERE USUARIO_LOGIN = '"+login+"' ");
            strSql.append("AND USUARIO_SENHA = '"+senha+"' ");
            
            Conexao.rs = Conexao.stmt.executeQuery(strSql.toString());
            while(Conexao.rs.next())
            {
                count++;
            }
            
            if(count == 0)
                return false;
            else
                return true;
            
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            return false;
        }
    }
    
    
}
